## 进程的创建

# 结论：通过进程去访问全局变量，cpu启动进程后就放弃了该进程，由进程自己去完成之后的任务，CPU去做其他的事情，全局变量不会被进程和子进程的执行而修改
# 进程是忽略了先后顺序的，主要是依靠cpu的调度算法来完成这个顺序的执行的。
from multiprocessing import Process
import os
import multiprocessing
from time import sleep

m = 1  #定义一个不可变长全局变量
lista = []  #定义一个可变长的全局变量
def test1(s,name):
    global m  # 局部使用全局变量
    while True:
        m+=1
        lista.append(str(m)+"test1")
        sleep(s)
        print("我是任务1。。。",m,lista)
def test2(s,name):
    global m  # 局部使用全局变量
    while True:
        m+=1
        lista.append(str(m)+"test2")
        sleep(s)
        print("我是任务2。。。",m,lista)
if __name__=="__main__":
    # 这里args传入的值可以作为方法中的入参传入，可变长
    p=Process(target=test1,name="进程1",args=(1,"a"))
    p.start()
    p2 = Process(target=test2, name="进程2",args=(2,"b"))
    p2.start()
    while True:
        sleep(0.3)    #进程执行太快，如果不做等待的话，没从1到100很快就结束，不会执行到子进程
        m+=1
        print(m)
        if m == 100:
            p.terminate()      # process.terminate()==终止进程
            p2.terminate()
            break